<?php
/**
 * User: LRZ
 * Date: 2020/1/16
 * Time: 15:45
 */

/**
 *  867.转置矩阵
 *
 *  标签：数组
 *
 *  给定一个矩阵 A， 返回 A 的转置矩阵。
 *  矩阵的转置是指将矩阵的主对角线翻转，交换矩阵的行索引与列索引。
 *
 *  示例 1：
 *      输入：[[1,2,3],[4,5,6],[7,8,9]]
 *      输出：[[1,4,7],[2,5,8],[3,6,9]]
 *
 *  示例 2：
 *      输入：[[1,2,3],[4,5,6]]
 *      输出：[[1,4],[2,5],[3,6]]
 *
 *  提示：
 *      1 <= A.length <= 1000
 *      1 <= A[0].length <= 1000
 *
 *  来源：力扣（LeetCode）
 *  链接：https://leetcode-cn.com/problems/transpose-matrix
 *  著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */

$start = microtime(true);

$A   = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];
$res = transpose($A);

$end = microtime(true);
print_r($res);
printf(' total run: %.2f s<br>' . 'memory usage: %.2f M<br> ', $end - $start, memory_get_usage() / 1024 / 1024);

function transpose($A)
{
    $R   = count($A);
    $C   = count($A[0]);
    $res = [];
    for ($r = 0; $r < $R; $r++) {
        for ($c = 0; $c < $C; $c++) {
            $res[$c][$r] = $A[$r][$c];
        }
    }
    return $res;
}